\documentclass[a4paper,12pt]{article}
\usepackage[dutch]{babel}
\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{float}
\usepackage{subcaption}
\usepackage[]{makeidx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\makeindex
\author{Breght Van Tongerloo}
\title{Project Linux-Unix}
\fancyhead[L]{Breght Van Tongerloo}
\fancyfoot[L]{Breght Van Tongerloo}

\begin{document}

\maketitle

\newpage\tableofcontents

\newpage\section{GIT?}

\subsection{Wat is GIT?}\cite{Git_nederlands}

\begin{wrapfigure}{r}{0.5\textwidth}
\centering
\includegraphics[scale=0.25]{images/git-logo.png}
  \caption{Git logo} 
\end{wrapfigure}

Git\index{Git} is een vrij gedistribueerd versiebeheersysteem. Het wordt ook wel een software broncode management project genoemd. De nadruk ligt op snelheid. Git is oorspronkelijk gemaakt door Linus Torvalds voor de ontwikkeling van de Linuxkernel.

\vspace{3 mm}Iedere Git werkmap bevat de volledige repository\index{repository} met een compleet historisch overzicht en volledige tracking capaciteiten. Git is niet afhankelijk van een gemeenschappelijke locatie of een centrale server zoals het 'Concurrent Versions System' (CVS) of Subversion\index{Subversion} (SVN).

\subsection{De geschiedenis van GIT}
De ontwikkeling van Git begon naar aanleiding van de beslissing van het bedrijf BitMover om het programma BitKeeper niet langer voor vrij gebruik aan te bieden. De licenties werden teruggetrokken nadat de eigenaar van BitKeeper een ontwikkelaar had beschuldigd van reverse engineering van het BitKeeper-protocol, terwijl dit niet toegestaan was volgens de licentie. Naast de ontwikkeling van Git werd om dezelfde reden met de ontwikkeling van het versiebeheersysteem Mercurial gestart.

\vspace{3 mm}Nadat BitKeeper niet meer gebruikt mocht worden wilde Torvalds een gedistribueerd versiebeheersysteem, zoals BitKeeper, maar er waren geen vrije beheersystemen die aan de prestatie-eisen voldeden van Torvalds. Torvalds stelde de volgende eisen aan een versiebeheersysteem voor de ontwikkeling van Linux:
\begin{itemize}
    \item Neem CVS niet als voorbeeld van een versiebeheersysteem. Kies het tegenovergestelde bij twijfel.
    \item Ondersteuning voor een BitKeeper-achtig gedistribueerde en niet-lineaire manier van softwareontwikkeling.
    \item Zeer strenge beveiliging tegen datacorruptie, per ongeluk of opzettelijk.
    \item Zeer hoge prestatie-eisen.
\end{itemize}

Aan de eerste drie eisen voldeed alleen Monotone. Geen van de bestaande systemen voldeed aan alle vier de eisen. Direct na het uitbrengen van ontwikkelversie 2.6.12-rc2 van de Linuxkernel begon Torvalds met de ontwikkeling van een eigen systeem.

\vspace{3 mm}De ontwikkeling van de software begon op 3 april 2005, werd aangekondigd op 6 april en sinds 7 april werd de broncode door de software zelf beheerd. Op 29 april werd aan de prestatie-eis van Tovalds voldaan. Op 16 juni werd versie 2.6.12 van de Linuxkernel uitgebracht met behulp van Git.

\vspace{3 mm}Ondanks dat Git geïnspireerd is op BitKeeper, heeft Torvalds opzettelijk gekozen voor een alternatieve benadering wat leidde tot een eigen systeem. Hij ontwikkelde het systeem totdat technische gebruikers het konden gebruiken. Hij droeg het project over aan degene die een groot aandeel heeft gehad in de ontwikkeling van Git, Junio Hamano, op 26 juli 2005. Hamano bracht versie 1.0 uit op 21 December 2005 en beheert het project tot de dag van vandaag.

\vspace{3 mm}In eerste instantie was het een complex systeem dat bestond uit elementaire bewerkingen om versiebeheer mee te verrichten. In de loop van de tijd ontstond er andere software om het gebruik van Git te vereenvoudigen, zoals Cogito. Later is de functionaliteit van Cogito geïntegreerd in Git zelf waardoor de noodzaak voor dit soort software verviel.

\vspace{3 mm}Git is zeer sterk gebaseerd op Unix-filosofie (vrij vertaald: doe één ding en doe dat goed) en is hierdoor zeer afhankelijk van andere Unix-programma's zoals diff en patch. Dit maakt de porteerbaarheid naar bijvoorbeeld Windows lastig. Er zijn tegenwoordig echter initiatieven om Git functionaliteit in Java of C\# opnieuw te implementeren waardoor de afhankelijkheid van deze software vervalt.

\subsection{Hoe wordt het gebruikt?}

Git verschilt enigszins van centrale versiebeheersystemen zoals Subversion (SVN). Bij centrale versiebeheersystemen worden revisies standaard geüpload naar een server wanneer een nieuwe versie ingediend wordt door een deelnemer. Bij Git daarentegen, worden nieuwe versies ingediend in een lokale kopie van de opslagplaats wanneer een deelnemer aanpassingen heeft gemaakt. Op elk gewenst moment kan deze lokale opslagplaats gesynchroniseerd worden met de server. Het voordeel hiervan is dat nieuwe revisies ingediend kunnen worden, zelfs als er geen internetverbinding beschikbaar is, terwijl voor centrale versiebeheersystemen altijd een verbinding nodig is met de server. Dit kunt u terugzien op afbeelding \ref{gitdataflow}

\begin{wrapfigure}{r}{0.5\textwidth}
\centering
\includegraphics[scale=0.50]{images/GitDataFlow.png}
 \caption{Git data flow}
 \label{gitdataflow}
\end{wrapfigure}

\vspace{3 mm}Het nadeel hiervan is dat meerdere deelnemers op eenzelfde revisie kunnen zitten, die onderling verschillen. Twee gebruikers kunnen op hetzelfde moment hun lokale kopieën synchroniseren met de server, en aanpassingen maken. Wanneer ze dat gedaan hebben, en één of meerdere keren hun werk ingediend hebben bij hun lokale kopie, kunnen er conflicten ontstaan aangezien de gebruikers niet dezelfde aanpassingen gemaakt hebben. Eén van de gebruikers zou vervolgens zijn kopie kunnen synchroniseren, stel naar revisie 15, terwijl zijn mede-deelnemer niet zo vaak een nieuwe versie ingediend heeft, en nog bij revisie 13 zit. Als die gebruiker zijn kopie synchroniseert met de server, zal hij conflicten moeten oplossen. Hiermee is echter rekening gehouden in de Git-software.

\newpage\section{Versiebeheersysteem}

\subsection{Wat is een versiebeheersysteem?}\cite{VCS}
Een versiebeheersysteem\index{versiebeheersysteem} of VCS (Engels: Version Control System) is een computerprogramma of een verzameling programma's waarmee men de wijzigingen in documenten, programma's of andere informatie bewaard in computerbestanden kan beheren. Een VCS wordt het meest gebruikt bij de ontwikkeling van software, zodat meerdere mensen wijzigingen kunnen aanbrengen aan dezelfde bestanden. Wijzigingen worden meestal aangeduid met een code, het "revisienummer" of "revisieniveau". Elke wijziging wordt gekoppeld aan een timestamp en aan de persoon die de wijziging maakte. Wijzigingen kunnen vergeleken worden, hersteld en soms samengevoegd.

\vspace{3 mm}Een versiebeheersysteem is meestal een apart programma, maar het is ook in beperkte mate ingebouwd in sommige software zoals tekstverwerkers (bijvoorbeeld Microsoft Word, OpenOffice.org Writer)  en in verschillende CMS\index{CMS} Systemen. Het is ook een kenmerk van wiki-software, zodat wijzigingen altijd teruggedraaid kunnen worden, bijvoorbeeld bij vandalisme.

\subsection{Hoe wordt het gebruikt?}
Een computerprogramma bijvoorbeeld is meestal te complex om in één keer te schrijven. Vaak gaat er enige tijd voorbij voordat het af is (van dagen tot jaren), en zelfs als het af verklaard wordt, gaat de maker vaak verder met een volgende, betere versie van het programma.
Een versiebeheersysteem bewaart voldoende informatie om oudere versies te kunnen terugvinden. Ook kan er voor elke wijziging een omschrijving van die wijziging (zoals b.v. de reden) bewaard worden. Wijzigingen die later problemen blijken te veroorzaken kunnen er gemakkelijk mee ongedaan worden gemaakt.

\vspace{3 mm}Sommige versiebeheersystemen staan ook toe om verschillende versies van hetzelfde programma tegelijk te beheren. Zo kan de maker zowel aan de nieuwe versie werken als fouten uit de oude versie halen. (Dergelijke hoofdversies heten releases, vrijgaves).

\subsection{Hoe werkt het?}
Over het algemeen werkt een VCS met een van de volgende twee methoden.

\begin{itemize}
    \item vergrendelen - bewerken - ontgrendelen
    \item kopi\"eren - bewerken - samenvoegen
\end{itemize}

\vspace{3 mm}Bij de eerste methode wordt een bestand exclusief toegewezen aan een bepaalde ontwikkelaar, andere ontwikkelaars kunnen niet tegelijkertijd aan dezelfde broncode werken. Als de ontwikkelaar klaar is met het aanbrengen van wijzigingen wordt de broncode weer vrijgegeven voor anderen.

\vspace{3 mm}Bij de tweede mothode werken meerdere mensen tegelijkertijd aan één bestand. Sommige versiebeheersystemen staan daarom toe dat meerdere mensen hetzelfde bestand tegelijkertijd kunnen bewerken. Bij het terugzetten van de wijzigingen in het VCS wordt gecontroleerd of wijzigingen elkaar overlappen. In dat geval moet er handmatig gekozen worden hoe de wijzigingen toch beide kunnen worden doorgevoerd.

\newpage\section{VCS oplossingen}

\subsection{VCS voorbeelden}\cite{Bettercodes}\cite{Codesion}\cite{Github}

Dit zijn enkele mogelijkheden voor het opslaan van projecten. Deze sites bieden gratis online ruimte aan om software projecten en dergelijke
op te slaan via een SVN plug-in.

\begin{table}[h!]
\begin{center}
\begin{tabular}{ | l | l | l |}
\hline
   Naam & Open-source framework & Ruimte \\ \hline
  Bettercodes.org & Yes & 2000 MB  \\ 
  Codesion & No & 200 MB  \\ 
  GitHub & No & 2000 MB  \\ \hline
\end{tabular}
\caption{Oplossingen voor opslag projecten}
\end{center}
\end{table}

Hieronder vindt u de logo's terug van de sites in de bovenstaande tabel.

\begin{figure}[h!]
        \begin{subfigure}[b]{0.3\textwidth}
                \centering
                \includegraphics[scale=0.25]{images/Bettercodes.jpg}
                \caption{Bettercodes logo}
        \end{subfigure}
        \begin{subfigure}[b]{0.3\textwidth}
                \centering
                \includegraphics[scale=0.25]{images/cvsdude_logo.png}
                \caption{Codesion logo}
        \end{subfigure}
        \begin{subfigure}[b]{0.3\textwidth}
                \centering
                \includegraphics[scale=0.25]{images/github-logo.png}
                \caption{GitHub logo}
        \end{subfigure}
        \caption{Logo's van de inhoud van de bovenstaande tabel}
\end{figure}

\newpage\section{Licentie}

\subsection{Onder welke licentie valt GIT?}
De GNU \index{GNU}, General Public License, of kortweg de GPL is een copyleftlicentie voor software, bedacht door Richard M. Stallman, die (in het kort) stelt dat je met de software mag doen wat je wil (inclusief aanpassen en verkopen), mits je dat recht ook doorgeeft aan anderen en de auteur(s) van de software vermeldt. Concreet komt dat er op neer dat als je software die onder de GPL is gepubliceerd wilt verspreiden, je daar de broncode bij zult moeten doen. Deze broncode mag dan weer verder worden verspreid onder de GPL. Iedereen kan ervoor kiezen zijn of haar programma onder de voorwaarden van deze licentie te publiceren.

\subsection{Wat is GNU precies?}\cite{GNU}

\begin{wrapfigure}{r}{0.5\textwidth}
\centering
\includegraphics[scale=0.10]{images/gnu-logo.png}
 \caption{GNU logo}
\end{wrapfigure}

Software die onder deze licentie wordt uitgegeven is vrij. Vaak wordt dit verkeerd geïnterpreteerd als gratis software, aangezien het Engelse woord voor vrij (free) ook gratis betekent. Met prijzen heeft de licentie echter weinig te maken: het gaat over rechten. Wel is het zo dat praktisch alle vrije software gratis te downloaden is en als men er toch voor moet betalen, men het recht heeft om de software zelf weg te geven of zelfs door te verkopen. De GNU General Public License is goedgekeurd volgens de Definitie van Vrije Culturele Werken.

\vspace{3 mm}De GNU Lesser General Public License (of kortweg de LGPL) is een afgezwakte versie van de GPL die soepeler omgaat met het gebruik van software in software met een andere licentie. Deze verschilt met de GPL op het punt dat software die gebruik maakt (als bibliotheek bijvoorbeeld) van LGPL-gelicenseerde software, zelf niet onder de LGPL hoeft te worden vrijgegeven.

\newpage\section{De ontwikkelaar van GIT}

\subsection{Wie is Linus Benedict Torvalds?}\cite{Linus_Torvalds}

Linus Benedict Torvalds, geboren op 28 december in Helsinki, is een Fins-Amerikaans informaticus, die het meest bekend is vanwege de initiële ontwikkeling van de Linuxkernel en daar tegenwoordig nog steeds coördinator van is.

\subsection{De loopbaan van Linus Benedict Torvald}

\begin{wrapfigure}{r}{0.5\textwidth}
\centering
\includegraphics[scale=0.50]{images/Linus_Torvalds.jpeg}
 \caption{Linus Benedict Torvalds}
\end{wrapfigure}

Torvalds is een zoon van de journalisten Anna en Nils Torvalds die hem naar Linus Pauling noemden. Hij behoort tot de Zweedssprekende minderheid in Finland, maar woont sinds 2008 in de Verenigde Staten en heeft zich in 2010 laten naturaliseren tot Amerikaans staatsburger.

\vspace{3 mm}Hij is verantwoordelijk voor het ontstaan van de Linuxkernel en bracht daarmee de vrije-softwarebeweging voor het eerst onder de aandacht van een groot publiek. In 1991 kondigde hij de beschikbaarheid van zijn Free Minix-like kernel voor het eerst aan. Zijn kernel was een aanvulling van het GNU-project, waaraan alleen nog een kernel ontbrak - daarvoor was indertijd, en nu nog steeds De Hurd gepland.

\vspace{3 mm}Minder dan vijf procent van de huidige code van de Linuxkernel is van zijn hand, maar Torvalds wordt nog wel door iedereen gezien als degene die het best kan beslissen welke code wel of niet in Linux terechtkomt. Op deze manier wordt voorkomen dat er een nieuwe afsplitsing van de Linuxkernel ontstaat en wordt verspreid, ook al is dit juridisch gezien mogelijk onder de GPL-licentie.

\vspace{3 mm}Torvalds ziet Linux als een hobby; hij had tot juni 2003 een fulltime baan bij Transmeta en vanaf die datum bij OSDL, nu opgegaan in The Linux Foundation. Als iemand vroeg wat hij bij Transmeta precies deed, dan was het antwoord "cool stuff" of gewoon "stuff". Waarschijnlijk werkte hij aan een compiler voor een nieuwe processor. Daarnaast mocht hij van Transmeta ook tijdens kantooruren aan Linux werken.

\vspace{3 mm}Torvalds had geen bezwaar tegen het schrijven van propriëtaire software bij Transmeta. Voor hem komt techniek op de eerste plaats en de openheid en vrije beschikbaarheid is voor hem alleen een methode de software beter te maken. Hij behoort hiermee tot de pragmatische open source beweging en niet tot de vrije software beweging (met name geleid door Richard Stallman en het GNU Project) die het met name te doen is om vrijheid.


\vspace{3 mm}Om bij Transmeta te kunnen werken verhuisde Torvalds van zijn geboorteland naar Silicon Valley. Samen met zijn echtgenote Tove Monni heeft hij drie kinderen, die hij geregeld meeneemt naar Linuxcongressen. Hij houdt zich meestal afzijdig van verhitte discussies over softwarelicenties.

\vspace{3 mm}Transmeta was intensief bezig 386+-processors na te bootsen, en Torvalds had daar bij het starten van zijn Linux-project een uitgebreide studie naar gedaan. Hij had vooral ervaring met de software-aspecten ervan, en gezien Transmeta als emulatiemaker erg softwaregericht is, kon Torvalds veel bijdragen. In zijn autobiografie zegt hij dat hij bijvoorbeeld de eerste tijd voornamelijk bezig was geweest een x86-emulator te schrijven.

\vspace{3 mm}In 2001 schreef Torvalds met behulp van David Diamond een autobiografie met een enigszins humoristische ondertoon.

\vspace{3 mm}Om beter te kunnen werken aan de Linuxkernel heeft Linus een programma genaamd Git geschreven (dit ter vervanging van het programma Bitkeeper dat hij tot dan toe gebruikte).

\subsection{Erkenning}\cite{MTP}

\begin{wrapfigure}{r}{0.5\textwidth}
\centering
\includegraphics[scale=0.20]{images/MTP.jpg}
 \caption{Millennium Technology Prize}
\end{wrapfigure}

Op 20 april 2012 werd Torvalds uitgeroepen tot één van de twee winnaars van de Millennium Technology Prize. De andere winnaar was Shinya Yamanaka. De prijs word vaak beschreven als de Nobelprijs binnen de Technologie. in tabel \ref{winnaarsMTP} vindt u nog enkele winnaars van de voorbije jaren.

\begin{table}[h!]
\begin{center}
\begin{tabular}{ | l | l | l | l|}
\hline
   Jaar & uitvinder & Afkomst & Uitvinding \\ \hline
  2004 & Tim Berners-Lee & Verenigd Koninkrijk & World Wide Web \\ 
  2006 & Shuji Nakamura & Japan & blauwe en witte LEDs  \\ 
  2008 & Robert Langer & USA & Biomateriaal onderzoek  \\
  2010 & Michael Grätzel & Zwitserland & 3de generatie zonnecellen \\ \hline
\end{tabular}
\caption{Winnaars van de Millennium Technology Prize}
\label{winnaarsMTP}
\end{center}
\end{table}

\newpage\section{lijsten}
\listoffigures
\listoftables

\newpage\section{bijlage}

\subsection{Opdracht 1.3.2: Versiebeheersysteem}
Voor het opzetten van een versiebeheer systeem heeft u een SVN-tool nodig en een repository. Een repository is een online
opslagplaats voor een versie van een project op te slaan. In dit voorbeeld wordt gebruik gemaakt van Google Code. Als SVN-tool
wordt SVN Workbench gebruikt.



\subsection{Opdracht 1.4: configureren mail-server}

\textbf{\textit{Stap 1:}} u dient eerst de nodige packages te installeren. Dit doet u door de terminal te openen en de 
volgende commando's te gebruiken:

\begin{enumerate}
\item sudo apt-get install mutt 
\item sudo apt-get install urlview muttprint
\end{enumerate}

\vspace{3 mm}\textbf{\textit{Stap 2:}} u maakt een map aan op de plaats die u wenst. Noem deze 'mutt'. Vervolgens maakt u in deze map
opnieuw een map met de naam 'mutt' en ten slotte maakt u in deze map een map genaamd 'cache'. u krijgt dan de volgende mappenstructuur:
'/mutt/mutt/cache'.

\vspace{3 mm}\textbf{\textit{Stap 3:}} u gaat nu een configuratiebestand aanmaken voor de mailserver. u maakt deze aan in de eerste map
'mutt' en noemt dit bestand 'muttrc'. ten slotte voegt u de commando's toe die u terugvindt op afbeelding \ref{muttconfig} en slaat u 
het bestand op. De commando's met een rood kadertje rond dient u aan te vullen met uw persoonlijke gegevens.

\begin{figure}[h!]
\centering
\includegraphics[scale=0.65]{images/mutt-config.jpg}
 \caption{MUTT config bestand}
 \label{muttconfig}
\end{figure}


\vspace{3 mm}\textbf{\textit{Stap 4:}} Als laatste stap moet u nog meedelen aan de mutt applicatie waar hij het configuratiebestand kan vinden.
u opent de terminal en typt daar het volgende commando in: 'mutt -F \textit{pad naar het configuratiebestand}'. Zo de mailserver is volledig
geconfigureerd.

\subsection{Opdracht 1.5: Bash-script}
U vindt het de inhoud van het Bash-script terug op de onderstaande afbeelding.

\begin{figure}[h!]
\centering
\includegraphics[scale=0.65]{images/bash-script.jpg}
 \caption{Bash-script}
\end{figure}

\subsection{opdracht1.3.2: Versiebeheersysteem}
In deze sectie staan de stappen die u moet volgen om gebruik te maken van een versiebeheersysteem.

\vspace{3 mm}\textbf{\textit{Stap 1:}}open de terminal en typ het volgende commando in: \"sudo apt-get install subversion\".

\vspace{3 mm}\textbf{\textit{Stap 2:}}vervolgens navigeert u zodat u in de juiste map zit in de terminal waar alle bestanden inzitten
die dienen gebruikt te worden door svn. U typt nu het volgende commando: \"svn import \textit{URL van de repository}'\". De bestanden
uit de map staan nu op de repository site. U krijgt dan het resultaat zoals op afbeelding \ref{googlecode}.

\begin{figure}[h!]
\centering
\includegraphics[scale=0.75]{images/googlecode.jpg}
 \caption{Google Code}
 \label{googlecode}
\end{figure}

\textbf{\textit{Stap 3:}} u kunt nu versies ophalen en wegschrijven naar de repository wanneer u maar wilt. Dit kunt u doen met de volgende commando's:
\begin{itemize}
\item ophalen: svn checkout
\item wegschrijven: svn add en svn commit
\end{itemize}

\printindex
\bibliographystyle{plain}
\bibliography{project}

\end{document}